V2(ui): progressively harmonize the CodeNomad interface - #667
V2(ui): progressively harmonize the CodeNomad interface#667pascalandr wants to merge 14 commits into
Conversation
Introduce independent System, Light, CodeNomad Classic, Basalt, Fjord, Lichen, Velvet, Ember, and Custom schemes backed by the existing server-owned UI preferences. Apply the selected palette before rendering and propagate ten validated core colors through semantic CSS variables and SUID. Preserve the exact current dark appearance through CodeNomad Classic, keep a custom draft across preset switches, and serialize rapid persistence writes while retaining instant local feedback. Add a square, responsive settings selector and ten-color custom editor in all supported locales. Reject malformed colors and palettes that fail text, accent, or status contrast requirements. Validated with the UI typecheck, production UI build, focused node tests, diff checks, and browser renders for System, Fjord, Classic, and Custom states.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33344555532 Artifacts expire in 7 days.
|
Unify tabs, selectors, panels, messages, tool output, timeline, notification history, and settings around the shared square-corner token and window utility layers. Keep responsive layouts usable and expose toggle, focus, timestamp, and resize state consistently to assistive technology. Add the host-neutral Preferences renderer, native titlebar controls, contextual provider routing, serialized dirty-state confirmation, and locale-complete labels. Keep the isolated renderer outside client-state authority and hide startup-only state there. Cover native request parsing, dirty confirmation serialization, theme migration/reactivity, model visibility, runtime context, and virtual follow behavior. Validated with the 643-test UI suite, UI typecheck, and production build.
Add singleton frameless Preferences windows to Electron and Tauri with validated section and workspace context, sender-bound window controls, scoped permissions, and authenticated renderer origins. Preserve native menus and fan out backend lifecycle events without adding Preferences to MRU, restoration, or client-state. Guard OS close, singleton reuse, and backend navigation with renderer dirty-state approval. Keep request authority ordered across rapid opens and reloads, reset readiness per document, and retain only the authenticated origins needed through backend restart transitions. Add Electron IPC/preload coverage and generated Tauri ACL schemas. Validated with 186 Electron native tests, 137 Rust tests, both typechecks, Electron/UI production builds, and an isolated Tauri release build.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33348221480 Artifacts expire in 7 days.
|
Run open_preferences_window through Tauri's asynchronous command executor so WebviewWindowBuilder can create the standalone window without blocking native IPC. This prevents fresh WebView2 profiles from stalling on about:blank and keeps later native commands responsive. Validated with all 137 Tauri unit tests, a release build, and a cold-profile CDP check that loaded Advanced Preferences and the Developer Automation card.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33366562540 Artifacts expire in 7 days.
|
Integrate the persistent Developer Mode runtime while preserving the standalone Preferences security boundary and harmonized desktop UI. Developer Mode remains available only to trusted local windows; Preferences keeps its constrained settings authority. Remove the superseded Developer Run APIs, retain Preferences IPC and frameless lifecycle behavior, harden closed-window identifier cleanup, and regenerate the Tauri ACL schemas from the merged capabilities. Validated with UI and Electron typechecks, 184 Electron native tests, 135 Tauri tests, Rust formatting, and generated-schema checks.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33377154527 Artifacts expire in 7 days.
|
Show localized File, Edit, View, Window, and Help controls in the shared frameless title bar. Each control opens the existing native submenu so Electron and Tauri retain platform accelerators, edit behavior, focus targeting, and workspace-aware enabled state. Expose the popup bridge only to trusted local windows, keep Preferences and remote windows outside that authority, align Help menus across desktop hosts, and regenerate the Tauri ACL schemas. Validated with UI and Electron typechecks, UI and Electron production builds, 185 Electron native tests, 136 Tauri tests, cargo check, and Rust formatting.
Position unread notification counts as compact superscripts over the notification control instead of leaving them inline beside the bell. Keep one client pixel below the prompt input so its inset focus highlight remains visible above the frameless window boundary. Validated with the UI typecheck and production build.
Use the standard panel border token for Status accordion separators so their brightness matches surrounding panel divisions across themes. Render the active Yolo switch with the success color used by other enabled validation controls instead of the warning color. Validated with the UI typecheck and production build.
Reduce card padding, metadata spacing, action spacing, and list gaps in the Status tab so multiple background shells remain scannable without consuming excessive vertical space. All existing shell details and actions remain available. Validated with the UI typecheck and production build.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33388869645 Artifacts expire in 7 days.
|
Move color schemes to the end of General settings and present every built-in and saved palette as a compact row with directly editable semantic color swatches. Saving prompts for an incremented preset name, validates contrast, and keeps unsaved edits behind the existing settings discard guard. Persist palette selection and named presets in device UI state while retaining read fallback from the previous UI config location. Compact configured provider cards without removing model or disconnect actions, and remove redundant Agent and Model labels from assistant metadata. Add preset normalization and naming coverage. Validated with the UI TypeScript check, focused Node tests, and the production UI build.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33395095464 Artifacts expire in 7 days.
|
Restore the singleton Preferences window under Tauri Developer Mode by applying the shared WebView2 arguments to its webview and recovering stale window handles. The YOLO switch now uses the palette's dedicated session accent. Protect unsaved palette edits across row changes, expose palette descriptions as native tooltips, and surface the 50-preset limit consistently on write. Simplify remaining agent/model metadata and keep provider identifiers readable in RTL layouts. Validated with the UI typecheck and production build, palette/theme node tests, Rust Preferences tests, and cargo fmt.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33399030995 Artifacts expire in 7 days.
|
Goal
Progressively harmonize CodeNomad toward the serenity, consistency, and clarity without removing its multi-agent workstation identity or operational visibility.
This is intentionally one long-lived draft PR. Work lands as small reviewable commits, with visual choices validated before each harmonization phase.
Checkpoint 1: color schemes
Planned checkpoints
Validation
npm run typecheck --workspace @codenomad/uinpm run build --workspace @codenomad/uinode --test packages/ui/src/lib/theme-scheme.test.tsgit diff --check